package util

import "time"

// contains 是一个泛型函数，用于检查元素是否在切片中
func Contains[T comparable](arr []T, target T) bool {
	elementMap := make(map[T]bool)
	for _, v := range arr {
		elementMap[v] = true
	}
	return elementMap[target]
}

// FrameworkConfig 假设这是配置结构体
type FrameworkConfig struct {
	FourHoursSecond int
}

// 假设的配置实例
var frameworkConfig = FrameworkConfig{
	FourHoursSecond: 4 * 60 * 60, // 四小时的秒数
}

func GetTime() int64 {
	return time.Now().Unix()
}

// IsSameDay 判断两个时间是否是同一天
func IsSameDay(checkTime int64, offset ...int) bool {
	// 如果没有提供偏移量，使用默认值
	var off int
	if len(offset) > 0 {
		off = offset[0]
	} else {
		off = frameworkConfig.FourHoursSecond
	}
	// 获取当前时间
	referenceTime := time.Now().Unix()
	// 两者都减去偏移量
	referenceTime -= int64(off)
	checkTime -= int64(off)
	// 将时间戳转换为 time.Time 类型
	checkDateTime := time.Unix(checkTime, 0)
	referenceDateTime := time.Unix(referenceTime, 0)
	// 判断日期是否相同
	return checkDateTime.Year() == referenceDateTime.Year() &&
		checkDateTime.Month() == referenceDateTime.Month() &&
		checkDateTime.Day() == referenceDateTime.Day()
}
